package com.vhall.component.service.pendant;

import com.vhall.component.entity.page.vo.PageVO;
import com.vhall.component.entity.pendant.PendantEntity;
import com.vhall.component.entity.pendant.vo.*;
import com.vhall.component.entity.room.dto.RoomsEntityDTO;

import java.util.List;

/**
 * @author guoxin.wang
 * @date 2021-10-29
 */
public interface PendantConsoleService {

    /**
     * 控制台-创建
     *
     * @param reqVO
     * @return
     */
    Boolean create(PendantCreateOrUpdateReqVO reqVO);

    /**
     * 控制台-删除
     *
     * @param reqVO 参数
     * @return 返回值
     **/
    Boolean delete(PendantDeleteReqVO reqVO);

    /**
     * 控制台-修改信息
     *
     * @param reqVO
     * @return
     */
    Boolean edit(PendantCreateOrUpdateReqVO reqVO);

    /**
     * 控制台-列表
     *
     * @param reqVO 参数
     * @return 返回值
     */
    PageVO<PendantRspVO> list(PendantListReqVO reqVO);

    /**
     * 控制台-设置默认固定挂件
     *
     * @param reqVO
     * @return
     */
    Boolean setDefaultFixed(PendantSetDefaultReqVO reqVO);

    /**
     * 控制台-房间-挂件统计信息列表
     *
     * @param reqVO 参数
     * @return 返回值
     */
    PageVO<PendantListStatsRspVO> listStats(PendantListStatsReqVO reqVO);

    /**
     * 控制台-获取默认固定挂件
     */
    PendantEntity getDefaultFixed(RoomsEntityDTO roomInfo);

    /**
     * 控制台-关联关键-已经关联列表
     *
     * @param reqVO
     * @return
     */
    List<PendantRspVO> bindingList(PendantListReqVO reqVO);

    /**
     * 控制台-关联关键-未关联列表
     *
     * @param reqVO
     * @return
     */
    PageVO<PendantRspVO> unbindingList(PendantListReqVO reqVO);

    /**
     * 控制台-绑定或解绑
     *
     * @param reqVO
     * @return
     */
    Boolean bindingOperation(BindingOperationReqVO reqVO);

}
